iT邦幫忙

2022 iThome 鐵人賽

DAY 28
0
自我挑戰組

三十天,PG與我系列 第 28

PostgreSQL效能測試-使用YCSB

  • 分享至 

  • xImage
  •  

https://github.com/brianfrankcooper/YCSB
YCSB是一款資料庫效能測試工具,內建許多種不同資料庫的支援,可以讓你對手上的資料庫進行效能上的測試。

YCSB是免安裝的Java程式,解壓縮完成之後首先要將測試用的資料讀進資料庫裏面,然後就可以對資料庫進行一連串的讀取/寫入/刪除/更新操作來測試它的性能。在YCSB上面定義這一連串行為的設定檔稱為workload,可以使用它內建的來進行測試,也可以自己建立一個。
每一個workload由一隻生成資料庫內容的Java程式以及一組參數設定組成,可以打開原始碼資料夾的workloads來查看內建的workload作為範本。參數的部分,從內建的workload可以看到一些像是recordcount(插入資料庫的筆數)/operationcount(workload跑起來的時候執行的請求數量)以及在operation count的測試執行次數之中讀取(readproportion)/插入(insertproportion)以及更新(updateproportion)各占多少比例,所有可使用的設定參數可以參考官方的說明
https://github.com/brianfrankcooper/YCSB/wiki/Core-Properties

workload準備完成之後,就依照所選的資料庫進行設定,這裡就用PostgreSQL來做示範,這個選項在YCSB官方叫做"postgrenosql"
https://github.com/brianfrankcooper/YCSB/blob/master/postgrenosql/README.md
首先準備postgrenosql.properties,裡面紀錄連線到Postgres所需的資訊
https://ithelp.ithome.com.tw/upload/images/20220928/20114934lqCFRcqW6E.png
再來依照官方說明的指示,建立測試用的資料庫及table
接著就可以開始執行workload的資料載入,這條指令的意思是執行workload A的載入部分,然後在執行workload任一階段都可以用-P去透過外部設定檔的參數(例如先前建立登入用的postgrenosql.properties)來執行。

.\bin\ycsb load postgrenosql -P .\workloads\workloada -P .\postgrenosql\conf\postgrenosql.properties

讀取完之後就可以執行run來跑測試,預設會跑一千次請求,也可以手動增加 使用 -p operationcount=1000000來複寫單一設定值。要注意的是執行時的recordcount最好跟資料讀取進去的時候一樣,這樣可以避免發生測試失準或是讀取的資料範圍大於資料庫內現有資料的情形。

.\bin\ycsb run postgrenosql -P .\workloads\workloada -P .\postgrenosql\conf\postgrenosql.properties 

YCSB程式執行完成之後,會出現類似下圖的報告,紀錄整體測試執行以及插入/更新/讀取各類操作的性能統計。
https://ithelp.ithome.com.tw/upload/images/20220928/20114934d1nSfdTj0M.png

除了單次測試的性能評估,YCSB也可以切換成time series的紀錄模式,可以觀察資料庫在持續進行操作的時候性能是否會有浮動的情形(好比官方說明是設定 -p measurementtype=timeseries -p timeseries.granularity=2000每兩秒收集數據來做平均),會輸出類似這樣的結果。
https://ithelp.ithome.com.tw/upload/images/20220928/20114934cpR9aqtXYO.png


上一篇
PostgreSQL功能介紹-Foreign table
下一篇
Postgres平行化query執行
系列文
三十天,PG與我30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言